# -*- coding: utf-8 -*-
# vim: set expandtab

"""
Widok zwraca krotkę:
    nazwa template'a, context
Dekorator render optula ja reszta gowna
"""

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect

from wiki.models import Strona, WersjaStrony
from wiki.wiki_settings import DEFAULT_TITLE, DEFAULT_TEMPLATE
from wiki import render, strona_lub_None
from wiki.forms import StronaForm 


@render
def indeks(request):
    strona = Strona.objects.strona_glowna()
    redirect_url = strona.get_absolute_url() 
    if strona:
	    pass
    else:
	    reverse('pokaz_strone_wiki', kwargs={'tytul_url': DEFAULT_TITLE})
    return HttpResponseRedirect(redirect_url)

@render
def pokaz_strone(request, tytul_url, wersja=None):
    """ Wyswietlenie zawartosci strony """
    strona = strona_lub_None(tytul_url)
    if not strona:
        return HttpResponseRedirect(reverse('edytuj_strone_wiki', kwargs={'tytul_url': tytul_url}))
    if wersja:
        try:
            wersja_strony = WersjaStrony.objects.get(strona=strona, numer_wersji=wersja)
        except:
            return HttpResponseRedirect(reverse('pokaz_strone_wiki', kwargs={'tytul_url': tytul_url}))
    else:
        wersja_strony = strona.aktualna_wersja
    return 'wiki/pokaz_strone.html', { 'strona': strona, 'wersja': wersja_strony}

@render
def edytuj_strone(request, tytul_url):
    """ Edycja strony -> Dodanie nowej wersji """
    context = {}
    strona = strona_lub_None(tytul_url)
    form = StronaForm
    if request.method == 'POST':
        form = form(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            if 'podglad' in request.POST:
                context['podglad'] = data['tresc']
            elif 'zapisz' in request.POST:               
                strona = strona or Strona(tytul_url=tytul_url, zalozyciel=request.user)
                strona.save()
                strona.grupy.clear()
                for grupa in data['grupy']:
                    strona.grupy.add(grupa)
                wersja_strony = WersjaStrony(tresc=data['tresc'], autor=request.user, strona=strona, komentarz=data['komentarz'])
                wersja_strony.save()
                strona.aktualna_wersja = wersja_strony
                strona.save()
                return HttpResponseRedirect(reverse('pokaz_strone_wiki',kwargs={'tytul_url':tytul_url}))
    elif request.method == 'GET':
        if strona:
            form = form({'tresc': strona.aktualna_wersja.tresc, 'grupy': [ unicode(x[0]) for x in strona.grupy.all().values_list('pk')] })
        else:
            form = form({'tresc': DEFAULT_TEMPLATE, 'komentarz': ''})
    if not strona:
        context['info'] = [u'Ta strona jeszcze nie istnieje! Dodaj ją teraz!', ]
    strony = Strona.objects.order_by('tytul_url')
    context.update({'strona': strona, 'form': form, 'strony': strony, \
                    'edytuje_zalozyciel': not strona or request.user == strona.zalozyciel})
    return 'wiki/edytuj_strone.html', context

@render
def pokaz_wersje(request, tytul_url):
    strona = strona_lub_None(tytul_url)
    return 'wiki/pokaz_wersje.html', {'strona': strona}
